There currently exist two distinct data types utilized to generate and represent images and other graphical objects on computing systems. These data types are typically referred to as “vector” and “raster” graphics. Raster graphics, also referred to as “bitmap” graphics, consist of a sequence of data representing a generally rectangular grid of picture elements, called “pixels.” Raster graphics generally correspond pixel-for-pixel with a displayed or printed representation of the content. Because raster graphics are discrete, they generally do not scale well.
Vector graphics, on the other hand, are represented by description, rather than by listing a value for each pixel in a graphic. Any geometric shape can be represented as a vector graphic, and any arbitrary shape may be represented by a combination of such geometric shapes, and hence as a vector graphic. For instance, a straight-line segment may be described as a vector graphic by describing its two endpoints, or by its slope, length, and origin. Likewise, a circle could be described in vector representation by describing its radius and center point. Accordingly, vector graphics are sometimes referred to as “geometric” data, since they define objects by description rather than as a sequence of pixels. Because vector graphics are continuous, they tend to scale very well.
In order for a standard viewer application, like a World Wide Web (“web”) browser to render a vector graphic, it is generally necessary to utilize a special plug-in to display the vector graphic. In many cases, a user may be unable to locate, download, and install a compatible plug-in for rendering vector graphics. In other cases, a compatible version of the plug-in may not be available for the type of device on which the user wishes to view the vector graphic. For instance, a user may wish to view a vector graphic on a personal digital assistant (“PDA”) or a wireless mobile telephone for which a version of the plug-in does not exist.
Most devices and standard viewer applications can, however, display a raster graphic without the need for a plug-in or other additional software. As a result, vector graphics may be rasterized to raster graphics for display on the widest variety of devices without the use of a plug-in. For instance, a server computer may rasterize a vector graphic to a raster graphic for display by a web browser without the use of a plug-in.
Traditional methods for rasterizing a vector graphic are, however, generally unsuitable for use on a server computer. This is typically due to the fact that previous methods for converting a vector graphic to a raster graphic utilize software components that are not designed to execute on multiple threads and that incur performance penalties due to the use of global and process-level locks. Once example of such components are the Graphics Device Interface (“GDI”) and GDI+ components that are frequently utilized to rasterize vector graphics on computing systems based upon the WINDOWS family of operating systems from MICROSOFT CORPORATION of Redmond, Wash.
It is with respect to these considerations and others that the disclosure made herein is presented.